﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cscript2
{

    //public class People
    //{

    //    public static Action<int> OnCooking;
    //    public virtual void Eat(int second)
    //    {

    //    }
    //}



    //public class Mom : People
    //{
    //    public int second;
    //    public Father father = new Father();
    //    public Son son = new Son();

    //    public void OnCookingStart()
    //    {
    //        People.OnCooking += Cooking;
    //        OnCooking?.Invoke(second);
    //        People.OnCooking -= Cooking;
    //    }

    //    public void OnCookingEnding()
    //    {
    //        Console.WriteLine("饭好了");
    //        People.OnCooking += Eat;
    //        father.OnEat();
    //        son.OnEat();
    //        OnCooking?.Invoke(second);
    //    }


    //    public override void Eat(int second)
    //    {
    //        Console.WriteLine("妈妈吃饭");
    //    }


    //    public void Cooking(int second)
    //    {
    //        Console.WriteLine("开始做饭");
    //        for(int i = 0;i < second;i++)
    //        {
    //            Console.WriteLine("等待" + i + "秒");
    //        }

    //    }
    //}

    //public class Father : People
    //{
    //    public void OnEat()
    //    {
    //        Mom.OnCooking += Eat;
    //    }

    //    public void OnEatEnd()
    //    {
    //        Mom.OnCooking -= Eat;
    //    }

    //    public override void Eat(int second)
    //    {
    //        Console.WriteLine("爸爸吃饭");
    //    }
    //}

    //public class Son : People
    //{
    //    public void OnEat()
    //    {
    //        Mom.OnCooking += Eat;
    //    }

    //    public void OnEatEnd()
    //    {
    //        Mom.OnCooking -= Eat;
    //    }


    //    public override void Eat(int second)
    //    {
    //        Console.WriteLine("儿子吃饭");
    //    }
    //}

    //public class Monster
    //{
    //    public static Action onDeath;

    //    public void OnDeath()
    //    {
    //        Console.WriteLine("怪物死亡");
    //        onDeath?.Invoke();
    //    }

    //}
    //public class Player
    //{
    //    private int Gold { get; set; } = 0;

    //    public Player()
    //    {
    //        OnMonsterDeath();
    //    }
    //    public void OnMonsterDeath()
    //    {
    //        Monster.onDeath += AddGold;
    //    }

    //    public void AddGold()
    //    {
    //        Gold += 10;
    //        Show();
    //    }

    //    public void Show()
    //    {
    //        Console.WriteLine("当前金币" + Gold);
    //    }

    //}
    //public class UI
    //{

    //    //更新UI
    //    public void UpdateUI()
    //    {

    //    }

    //    public void Show()
    //    {
    //        Console.WriteLine("当前积分");
    //    }
    //}
    //public class Achievementr
    //{
    //    int integral { get; set; } = 0;

    //    public Achievementr()
    //    {
    //        OnMonsterDeath();
    //    }

    //    public void OnMonsterDeath()
    //    {
    //        Monster.onDeath += UpdateIntegral;
    //    }

    //    public void UpdateIntegral()
    //    {
    //        integral += 1;
    //        Show();
    //    }

    //    public void Show()
    //    {
    //        Console.WriteLine("当前积分" + integral);
    //    }

    //}



    class Program
    {
        //public static void TestDel(int a,Func<int,int> func)
        //{

        //    //处理加分逻辑
        //    a += 10;

        //    //检查有没有被扣分的方法
        //    a = func(a);

        //    Console.WriteLine("被扣除后分数" + a);
        //}

        //public static T Test<T>(T t)
        //{

        //    return default(T);
        //}


        static void Main(string[] args)
        {
            //int a = 10;
            //Test<int>(a);

            //var b = Test<int>(a);

            //Console.WriteLine(b.GetType());

            //int a = 10;

            //bool isHurt = true;

            //TestDel(a, delegate (int b)
            //{
            //    int c = 3;
            //    if (isHurt)
            //    {
            //        return b -= c;
            //    }else
            //    {
            //        return b;
            //    }
            //});



            //Monster monster = new Monster();
            //Player player = new Player();
            //Achievementr achievementr = new Achievementr();

            //monster.OnDeath();

            //Mom mom = new Mom();
            //mom.second = 10;
            //mom.OnCookingStart();
            //mom.OnCookingEnding();


            Console.ReadLine();

        }
    }
}
